home *** CD-ROM | disk | FTP | other *** search
/ STraTOS 1997 April & May / STraTOS 1 - 1997 April & May.iso / CD01 / INTERNET / SITES / RAND / TK408.ZIP / TOOLS / TKBUBBLE / TKBUBBLE.S < prev    next >
Encoding:
Text File  |  1996-12-24  |  3.1 KB  |  109 lines

  1.  
  2. *-------------------------------------------------------*
  3.  
  4.     COMMENT        HEAD=7
  5.  
  6. *-------------------------------------------------------*
  7.  
  8. trap1            =    $84
  9. trap2            =    $88
  10. trap13            =    $B4
  11. trap14            =    $B8
  12.  
  13. *-------------------------------------------------------*
  14.  
  15. *-------------------------------------------------------*
  16.         rsset    -12
  17. *-------------------------------------------------------*
  18. xbra_tag    rs.l    1
  19. xbra_id        rs.l    1
  20. xbra_ptr    rs.l    1
  21.  
  22. *-------------------------------------------------------*
  23.  
  24. push    macro
  25.     move.\0        \1,-(sp)
  26.     endm
  27.     
  28. pop    macro
  29.     move.\0        (sp)+,\1
  30.     endm
  31.  
  32. *-------------------------------------------------------*
  33.  
  34. *-------------------------------------------------------*
  35. bubble:
  36. *-------------------------------------------------------*
  37. *    Local stack                    *
  38. *-------------------------------------------------------*
  39.     lea        usp_stack,sp
  40. *-------------------------------------------------------*
  41. *    Enter supervisor mode                *
  42. *-------------------------------------------------------*
  43.     pea        0.w
  44.     push.w        #32
  45.     trap        #1
  46.     addq.l        #6,sp
  47.     move.l        d0,os_stack
  48. *-------------------------------------------------------*
  49. *    Bubble trap vectors                *
  50. *-------------------------------------------------------*
  51.     lea        trap1.w,a2
  52.     bsr        bubble_xbra
  53. *-------------------------------------------------------*
  54. exit_program:
  55. *-------------------------------------------------------*
  56. *    User mode                    *
  57. *-------------------------------------------------------*
  58.     push.l        os_stack
  59.     push.w        #32
  60.     trap        #1
  61.     addq.l        #6,sp
  62. *-------------------------------------------------------*
  63. *    Terminate                    *
  64. *-------------------------------------------------------*
  65.     clr.w        -(sp)
  66.     trap        #1
  67.     
  68. *---------------------------------------------------------------*
  69. bubble_xbra:
  70. *---------------------------------------------------------------*
  71.     move.l        a2,a1
  72. *---------------------------------------------------------------*
  73. *    Search for XBRA patch                    *
  74. *---------------------------------------------------------------*
  75. .look:    move.l        (a1),a0
  76.     cmp.l        #'XBRA',xbra_tag(a0)
  77.     bne.s        .done
  78.     cmp.l        #'_DOS',xbra_tag(a0)
  79.     beq.s        .done
  80.     cmp.l        #'TK40',xbra_id(a0)
  81.     beq.s        .got
  82.     lea        xbra_ptr(a0),a1
  83.     bra.s        .look
  84. *---------------------------------------------------------------*
  85. *    a0 = XBRA patch address                    *
  86. *    a1 = XBRA patch address pointer (previous XBRA)        *
  87. *---------------------------------------------------------------*
  88. *    Remove XBRA patch                    *
  89. *---------------------------------------------------------------*
  90. .got:    move.l        xbra_ptr(a0),(a1)        
  91. *---------------------------------------------------------------*
  92. *    Re-install XBRA patch                    *
  93. *---------------------------------------------------------------*
  94.     move.l        (a2),xbra_ptr(a0)
  95.     move.l        a0,(a2)
  96. *---------------------------------------------------------------*
  97. .done:    rts
  98.  
  99. *---------------------------------------------------------------*
  100.             bss
  101. *---------------------------------------------------------------*
  102.  
  103. os_stack:        ds.l    1
  104.  
  105.             ds.b    1024
  106. usp_stack:        ds.l    1
  107.  
  108. *---------------------------------------------------------------*
  109.